'''
切分规则：
最优： 33 。把绳子尽可能切为多个长度为 33 的片段，留下的最后一段绳子的长度可能为 0,1,20,1,2 三种情况。
次优： 22 。若最后一段绳子长度为 22 ；则保留，不再拆为 1+11+1 。
最差： 11 。若最后一段绳子长度为 11 ；则应把一份 3 + 13+1 替换为 2 + 22+2，因为 2 \times 2 > 3 \times 12×2>3×1。
尽可能多的3和2不能有1
'''
class Solution:
    def cuttingRope(self, n: int) -> int:
        if n < 3:return 1
        if n == 3 : return 2
        three = n//3
        if n%3 == 1:
            return 3**(three-1)*4
        elif n%3 == 2:
            return 3**three*2
        else:
            return 3**three
print(Solution().cuttingRope(10))